#include "gtkcssstringvalueprivate.h"
#include "gtkcssstylefuncsprivate.h"
#include "gtkcssvalueprivate.h"
-#include "deprecated/gtkstylepropertiesprivate.h"
#include "gtktypebuiltins.h"
/* this is in case round() is not provided by the compiler,
/*** PACKING ***/
-static void
-unpack_border (GtkCssShorthandProperty *shorthand,
- GtkStyleProperties *props,
- GtkStateFlags state,
- const GValue *value)
-{
- GValue v = G_VALUE_INIT;
- GtkBorder *border = g_value_get_boxed (value);
-
- g_value_init (&v, G_TYPE_INT);
-
- g_value_set_int (&v, border->top);
- _gtk_style_property_assign (GTK_STYLE_PROPERTY (_gtk_css_shorthand_property_get_subproperty (shorthand, 0)), props, state, &v);
- g_value_set_int (&v, border->right);
- _gtk_style_property_assign (GTK_STYLE_PROPERTY (_gtk_css_shorthand_property_get_subproperty (shorthand, 1)), props, state, &v);
- g_value_set_int (&v, border->bottom);
- _gtk_style_property_assign (GTK_STYLE_PROPERTY (_gtk_css_shorthand_property_get_subproperty (shorthand, 2)), props, state, &v);
- g_value_set_int (&v, border->left);
- _gtk_style_property_assign (GTK_STYLE_PROPERTY (_gtk_css_shorthand_property_get_subproperty (shorthand, 3)), props, state, &v);
-
- g_value_unset (&v);
-}
-
static void
pack_border (GtkCssShorthandProperty *shorthand,
GValue *value,
g_value_set_boxed (value, &border);
}
-static void
-unpack_border_radius (GtkCssShorthandProperty *shorthand,
- GtkStyleProperties *props,
- GtkStateFlags state,
- const GValue *value)
-{
- GtkCssValue *css_value;
- guint i;
-
- css_value = _gtk_css_corner_value_new (_gtk_css_number_value_new (g_value_get_int (value), GTK_CSS_PX),
- _gtk_css_number_value_new (g_value_get_int (value), GTK_CSS_PX));
-
- for (i = 0; i < 4; i++)
- _gtk_style_properties_set_property_by_property (props,
- _gtk_css_shorthand_property_get_subproperty (shorthand, i),
- state,
- css_value);
-
- _gtk_css_value_unref (css_value);
-}
-
static void
pack_border_radius (GtkCssShorthandProperty *shorthand,
GValue *value,
g_value_set_int (value, i);
}
-static void
-unpack_font_description (GtkCssShorthandProperty *shorthand,
- GtkStyleProperties *props,
- GtkStateFlags state,
- const GValue *value)
-{
- GtkStyleProperty *prop;
- PangoFontDescription *description;
- PangoFontMask mask;
- GValue v = G_VALUE_INIT;
-
- /* For backwards compat, we only unpack values that are indeed set.
- * For strict CSS conformance we need to unpack all of them.
- * Note that we do set all of them in the parse function, so it
- * will not have effects when parsing CSS files. It will though
- * for custom style providers.
- */
-
- description = g_value_get_boxed (value);
-
- if (description)
- mask = pango_font_description_get_set_fields (description);
- else
- mask = 0;
-
- if (mask & PANGO_FONT_MASK_FAMILY)
- {
- GPtrArray *strv = g_ptr_array_new ();
-
- g_ptr_array_add (strv, g_strdup (pango_font_description_get_family (description)));
- g_ptr_array_add (strv, NULL);
- g_value_init (&v, G_TYPE_STRV);
- g_value_take_boxed (&v, g_ptr_array_free (strv, FALSE));
-
- prop = _gtk_style_property_lookup ("font-family");
- _gtk_style_property_assign (prop, props, state, &v);
- g_value_unset (&v);
- }
-
- if (mask & PANGO_FONT_MASK_STYLE)
- {
- g_value_init (&v, PANGO_TYPE_STYLE);
- g_value_set_enum (&v, pango_font_description_get_style (description));
-
- prop = _gtk_style_property_lookup ("font-style");
- _gtk_style_property_assign (prop, props, state, &v);
- g_value_unset (&v);
- }
-
- if (mask & PANGO_FONT_MASK_VARIANT)
- {
- g_value_init (&v, PANGO_TYPE_VARIANT);
- g_value_set_enum (&v, pango_font_description_get_variant (description));
-
- prop = _gtk_style_property_lookup ("font-variant");
- _gtk_style_property_assign (prop, props, state, &v);
- g_value_unset (&v);
- }
-
- if (mask & PANGO_FONT_MASK_WEIGHT)
- {
- g_value_init (&v, PANGO_TYPE_WEIGHT);
- g_value_set_enum (&v, pango_font_description_get_weight (description));
-
- prop = _gtk_style_property_lookup ("font-weight");
- _gtk_style_property_assign (prop, props, state, &v);
- g_value_unset (&v);
- }
-
- if (mask & PANGO_FONT_MASK_STRETCH)
- {
- g_value_init (&v, PANGO_TYPE_STRETCH);
- g_value_set_enum (&v, pango_font_description_get_stretch (description));
-
- prop = _gtk_style_property_lookup ("font-stretch");
- _gtk_style_property_assign (prop, props, state, &v);
- g_value_unset (&v);
- }
-
- if (mask & PANGO_FONT_MASK_SIZE)
- {
- double size;
-
- g_value_init (&v, G_TYPE_DOUBLE);
- size = pango_font_description_get_size (description) / PANGO_SCALE;
- if (!pango_font_description_get_size_is_absolute (description))
- size = size * 96.0 / 72.0;
- g_value_set_double (&v, size);
- prop = _gtk_style_property_lookup ("font-size");
- _gtk_style_property_assign (prop, props, state, &v);
- g_value_unset (&v);
- }
-}
-
static void
pack_font_description (GtkCssShorthandProperty *shorthand,
GValue *value,
g_value_take_boxed (value, description);
}
-static void
-unpack_to_everything (GtkCssShorthandProperty *shorthand,
- GtkStyleProperties *props,
- GtkStateFlags state,
- const GValue *value)
-{
- GtkCssStyleProperty *prop;
- guint i, n;
-
- n = _gtk_css_shorthand_property_get_n_subproperties (shorthand);
-
- for (i = 0; i < n; i++)
- {
- prop = _gtk_css_shorthand_property_get_subproperty (shorthand, i);
- _gtk_style_property_assign (GTK_STYLE_PROPERTY (prop), props, state, value);
- }
-}
-
static void
pack_first_element (GtkCssShorthandProperty *shorthand,
GValue *value,
GType value_type,
const char **subproperties,
GtkCssShorthandPropertyParseFunc parse_func,
- GtkCssShorthandPropertyAssignFunc assign_func,
GtkCssShorthandPropertyQueryFunc query_func)
{
GtkCssShorthandProperty *node;
NULL);
node->parse = parse_func;
- node->assign = assign_func;
node->query = query_func;
}
PANGO_TYPE_FONT_DESCRIPTION,
font_subproperties,
parse_font,
- unpack_font_description,
pack_font_description);
_gtk_css_shorthand_property_register ("margin",
GTK_TYPE_BORDER,
margin_subproperties,
parse_margin,
- unpack_border,
pack_border);
_gtk_css_shorthand_property_register ("padding",
GTK_TYPE_BORDER,
padding_subproperties,
parse_padding,
- unpack_border,
pack_border);
_gtk_css_shorthand_property_register ("border-width",
GTK_TYPE_BORDER,
border_width_subproperties,
parse_border_width,
- unpack_border,
pack_border);
_gtk_css_shorthand_property_register ("border-radius",
G_TYPE_INT,
border_radius_subproperties,
parse_border_radius,
- unpack_border_radius,
pack_border_radius);
_gtk_css_shorthand_property_register ("border-color",
GDK_TYPE_RGBA,
border_color_subproperties,
parse_border_color,
- unpack_to_everything,
pack_first_element);
_gtk_css_shorthand_property_register ("border-style",
GTK_TYPE_BORDER_STYLE,
border_style_subproperties,
parse_border_style,
- unpack_to_everything,
pack_first_element);
_gtk_css_shorthand_property_register ("border-image",
G_TYPE_NONE,
border_image_subproperties,
parse_border_image,
- NULL,
NULL);
_gtk_css_shorthand_property_register ("border-top",
G_TYPE_NONE,
border_top_subproperties,
parse_border_side,
- NULL,
NULL);
_gtk_css_shorthand_property_register ("border-right",
G_TYPE_NONE,
border_right_subproperties,
parse_border_side,
- NULL,
NULL);
_gtk_css_shorthand_property_register ("border-bottom",
G_TYPE_NONE,
border_bottom_subproperties,
parse_border_side,
- NULL,
NULL);
_gtk_css_shorthand_property_register ("border-left",
G_TYPE_NONE,
border_left_subproperties,
parse_border_side,
- NULL,
NULL);
_gtk_css_shorthand_property_register ("border",
G_TYPE_NONE,
border_subproperties,
parse_border,
- NULL,
NULL);
_gtk_css_shorthand_property_register ("-gtk-outline-radius",
G_TYPE_INT,
outline_radius_subproperties,
parse_border_radius,
- unpack_border_radius,
pack_border_radius);
_gtk_style_property_add_alias ("-gtk-outline-radius", "outline-radius");
_gtk_css_shorthand_property_register ("outline",
G_TYPE_NONE,
outline_subproperties,
parse_border_side,
- NULL,
NULL);
_gtk_css_shorthand_property_register ("background",
G_TYPE_NONE,
background_subproperties,
parse_background,
- NULL,
NULL);
_gtk_css_shorthand_property_register ("transition",
G_TYPE_NONE,
transition_subproperties,
parse_transition,
- NULL,
NULL);
_gtk_css_shorthand_property_register ("animation",
G_TYPE_NONE,
animation_subproperties,
parse_animation,
- NULL,
NULL);
_gtk_css_shorthand_property_register ("text-decoration",
G_TYPE_NONE,
text_decoration_subproperties,
parse_text_decoration,
- NULL,
NULL);
all_subproperties = get_all_subproperties ();
G_TYPE_NONE,
all_subproperties,
parse_all,
- NULL,
NULL);
g_free (all_subproperties);
}
GtkCssAffects affects,
GtkCssStylePropertyParseFunc parse_value,
GtkCssStylePropertyQueryFunc query_value,
- GtkCssStylePropertyAssignFunc assign_value,
GtkCssValue * initial_value)
{
GtkCssStyleProperty *node;
g_assert (initial_value != NULL);
g_assert (parse_value != NULL);
g_assert (value_type == G_TYPE_NONE || query_value != NULL);
- g_assert (assign_value == NULL || query_value != NULL);
node = g_object_new (GTK_TYPE_CSS_STYLE_PROPERTY,
"value-type", value_type,
node->parse_value = parse_value;
node->query_value = query_value;
- node->assign_value = assign_value;
_gtk_css_value_unref (initial_value);
g_value_set_int (value, round (_gtk_css_number_value_get (css_value, 100)));
}
-static GtkCssValue *
-assign_length_from_int (GtkCssStyleProperty *property,
- const GValue *value)
-{
- return _gtk_css_number_value_new (g_value_get_int (value), GTK_CSS_PX);
-}
-
static void
query_font_size (GtkCssStyleProperty *property,
const GtkCssValue *css_value,
g_value_set_double (value, _gtk_css_number_value_get (css_value, 100));
}
-static GtkCssValue *
-assign_font_size (GtkCssStyleProperty *property,
- const GValue *value)
-{
- return _gtk_css_number_value_new (g_value_get_double (value), GTK_CSS_PX);
-}
-
static void
query_border (GtkCssStyleProperty *property,
const GtkCssValue *css_value,
g_value_set_boxed (value, &border);
}
-static GtkCssValue *
-assign_border (GtkCssStyleProperty *property,
- const GValue *value)
-{
- const GtkBorder *border = g_value_get_boxed (value);
-
- if (border == NULL)
- return _gtk_css_initial_value_new ();
- else
- return _gtk_css_border_value_new (_gtk_css_number_value_new (border->top, GTK_CSS_PX),
- _gtk_css_number_value_new (border->right, GTK_CSS_PX),
- _gtk_css_number_value_new (border->bottom, GTK_CSS_PX),
- _gtk_css_number_value_new (border->left, GTK_CSS_PX));
-}
-
static GtkCssValue *
color_parse (GtkCssStyleProperty *property,
GtkCssParser *parser)
g_value_set_boxed (value, _gtk_css_rgba_value_get_rgba (css_value));
}
-static GtkCssValue *
-color_assign (GtkCssStyleProperty *property,
- const GValue *value)
-{
- return _gtk_css_rgba_value_new_from_rgba (g_value_get_boxed (value));
-}
-
static GtkCssValue *
font_family_parse_one (GtkCssParser *parser)
{
g_value_set_boxed (value, g_ptr_array_free (array, FALSE));
}
-static GtkCssValue *
-font_family_assign (GtkCssStyleProperty *property,
- const GValue *value)
-{
- const char **names;
- GtkCssValue *result;
- GPtrArray *array;
-
- array = g_ptr_array_new ();
-
- for (names = g_value_get_boxed (value); *names; names++)
- {
- g_ptr_array_add (array, _gtk_css_string_value_new (*names));
- }
-
- result = _gtk_css_array_value_new_from_array ((GtkCssValue **) array->pdata, array->len);
- g_ptr_array_free (array, TRUE);
- return result;
-}
-
static GtkCssValue *
font_style_parse (GtkCssStyleProperty *property,
GtkCssParser *parser)
g_value_set_enum (value, _gtk_css_font_style_value_get (css_value));
}
-static GtkCssValue *
-font_style_assign (GtkCssStyleProperty *property,
- const GValue *value)
-{
- return _gtk_css_font_style_value_new (g_value_get_enum (value));
-}
-
static GtkCssValue *
font_weight_parse (GtkCssStyleProperty *property,
GtkCssParser *parser)
g_value_set_enum (value, _gtk_css_font_weight_value_get (css_value));
}
-static GtkCssValue *
-font_weight_assign (GtkCssStyleProperty *property,
- const GValue *value)
-{
- return _gtk_css_font_weight_value_new (g_value_get_enum (value));
-}
-
static GtkCssValue *
font_variant_parse (GtkCssStyleProperty *property,
GtkCssParser *parser)
g_value_set_enum (value, _gtk_css_font_variant_value_get (css_value));
}
-static GtkCssValue *
-font_variant_assign (GtkCssStyleProperty *property,
- const GValue *value)
-{
- return _gtk_css_font_variant_value_new (g_value_get_enum (value));
-}
-
static GtkCssValue *
font_stretch_parse (GtkCssStyleProperty *property,
GtkCssParser *parser)
g_value_set_enum (value, _gtk_css_font_stretch_value_get (css_value));
}
-static GtkCssValue *
-font_stretch_assign (GtkCssStyleProperty *property,
- const GValue *value)
-{
- return _gtk_css_font_stretch_value_new (g_value_get_enum (value));
-}
-
static GtkCssValue *
parse_border_style (GtkCssStyleProperty *property,
GtkCssParser *parser)
g_value_set_enum (value, _gtk_css_border_style_value_get (css_value));
}
-static GtkCssValue *
-assign_border_style (GtkCssStyleProperty *property,
- const GValue *value)
-{
- return _gtk_css_border_style_value_new (g_value_get_enum (value));
-}
-
static GtkCssValue *
parse_css_area_one (GtkCssParser *parser)
{
g_value_take_boxed (value, array);
}
-static GtkCssValue *
-bindings_value_assign (GtkCssStyleProperty *property,
- const GValue *value)
-{
- GPtrArray *binding_sets = g_value_get_boxed (value);
- GtkCssValue **values, *result;
- guint i;
-
- if (binding_sets == NULL || binding_sets->len == 0)
- return _gtk_css_array_value_new (_gtk_css_string_value_new (NULL));
-
- values = g_new (GtkCssValue *, binding_sets->len);
-
- for (i = 0; i < binding_sets->len; i++)
- {
- GtkBindingSet *binding_set = g_ptr_array_index (binding_sets, i);
- values[i] = _gtk_css_string_value_new (binding_set->set_name);
- }
-
- result = _gtk_css_array_value_new_from_array (values, binding_sets->len);
- g_free (values);
- return result;
-}
-
static GtkCssValue *
parse_letter_spacing (GtkCssStyleProperty *property,
GtkCssParser *parser)
}
}
-static GtkCssValue *
-css_image_value_assign (GtkCssStyleProperty *property,
- const GValue *value)
-{
- g_warning ("FIXME: assigning images is not implemented");
- return _gtk_css_image_value_new (NULL);
-}
-
static GtkCssValue *
background_image_value_parse_one (GtkCssParser *parser)
{
css_image_value_query (property, _gtk_css_array_value_get_nth (css_value, 0), value);
}
-static GtkCssValue *
-background_image_value_assign (GtkCssStyleProperty *property,
- const GValue *value)
-{
- return _gtk_css_array_value_new (css_image_value_assign (property, value));
-}
-
static GtkCssValue *
dpi_parse (GtkCssStyleProperty *property,
GtkCssParser *parser)
GTK_CSS_AFFECTS_FOREGROUND | GTK_CSS_AFFECTS_TEXT | GTK_CSS_AFFECTS_SYMBOLIC_ICON,
color_parse,
color_query,
- color_assign,
_gtk_css_color_value_new_rgba (1, 1, 1, 1));
gtk_css_style_property_register ("-gtk-dpi",
GTK_CSS_PROPERTY_DPI,
GTK_CSS_AFFECTS_FONT | GTK_CSS_AFFECTS_TEXT | GTK_CSS_AFFECTS_SIZE,
dpi_parse,
NULL,
- NULL,
_gtk_css_number_value_new (96.0, GTK_CSS_NUMBER));
gtk_css_style_property_register ("font-size",
GTK_CSS_PROPERTY_FONT_SIZE,
GTK_CSS_AFFECTS_FONT | GTK_CSS_AFFECTS_TEXT | GTK_CSS_AFFECTS_SIZE,
font_size_parse,
query_font_size,
- assign_font_size,
_gtk_css_font_size_value_new (GTK_CSS_FONT_SIZE_MEDIUM));
gtk_css_style_property_register ("-gtk-icon-theme",
GTK_CSS_PROPERTY_ICON_THEME,
GTK_CSS_AFFECTS_ICON | GTK_CSS_AFFECTS_SYMBOLIC_ICON,
icon_theme_value_parse,
NULL,
- NULL,
gtk_css_icon_theme_value_new (NULL));
gtk_css_style_property_register ("-gtk-icon-palette",
GTK_CSS_PROPERTY_ICON_PALETTE,
GTK_CSS_AFFECTS_SYMBOLIC_ICON,
icon_palette_parse,
NULL,
- NULL,
gtk_css_palette_value_new_default ());
GTK_CSS_AFFECTS_BACKGROUND,
color_parse,
color_query,
- color_assign,
_gtk_css_color_value_new_rgba (0, 0, 0, 0));
gtk_css_style_property_register ("font-family",
GTK_CSS_AFFECTS_FONT | GTK_CSS_AFFECTS_TEXT,
font_family_parse,
font_family_query,
- font_family_assign,
_gtk_css_array_value_new (_gtk_css_string_value_new ("Sans")));
gtk_css_style_property_register ("font-style",
GTK_CSS_PROPERTY_FONT_STYLE,
GTK_CSS_AFFECTS_FONT | GTK_CSS_AFFECTS_TEXT,
font_style_parse,
font_style_query,
- font_style_assign,
_gtk_css_font_style_value_new (PANGO_STYLE_NORMAL));
gtk_css_style_property_register ("font-variant",
GTK_CSS_PROPERTY_FONT_VARIANT,
GTK_CSS_AFFECTS_FONT | GTK_CSS_AFFECTS_TEXT,
font_variant_parse,
font_variant_query,
- font_variant_assign,
_gtk_css_font_variant_value_new (PANGO_VARIANT_NORMAL));
gtk_css_style_property_register ("font-weight",
GTK_CSS_PROPERTY_FONT_WEIGHT,
GTK_CSS_AFFECTS_FONT | GTK_CSS_AFFECTS_TEXT,
font_weight_parse,
font_weight_query,
- font_weight_assign,
_gtk_css_font_weight_value_new (PANGO_WEIGHT_NORMAL));
gtk_css_style_property_register ("font-stretch",
GTK_CSS_PROPERTY_FONT_STRETCH,
GTK_CSS_AFFECTS_FONT | GTK_CSS_AFFECTS_TEXT,
font_stretch_parse,
font_stretch_query,
- font_stretch_assign,
_gtk_css_font_stretch_value_new (PANGO_STRETCH_NORMAL));
gtk_css_style_property_register ("letter-spacing",
GTK_CSS_AFFECTS_TEXT | GTK_CSS_AFFECTS_TEXT_ATTRS,
parse_letter_spacing,
NULL,
- NULL,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("text-decoration-line",
GTK_CSS_AFFECTS_TEXT | GTK_CSS_AFFECTS_TEXT_ATTRS,
parse_text_decoration_line,
NULL,
- NULL,
_gtk_css_text_decoration_line_value_new (GTK_CSS_TEXT_DECORATION_LINE_NONE));
gtk_css_style_property_register ("text-decoration-color",
GTK_CSS_PROPERTY_TEXT_DECORATION_COLOR,
GTK_CSS_AFFECTS_TEXT | GTK_CSS_AFFECTS_TEXT_ATTRS,
color_parse,
NULL,
- NULL,
_gtk_css_color_value_new_current_color ());
gtk_css_style_property_register ("text-decoration-style",
GTK_CSS_PROPERTY_TEXT_DECORATION_STYLE,
GTK_CSS_AFFECTS_TEXT | GTK_CSS_AFFECTS_TEXT_ATTRS,
parse_text_decoration_style,
NULL,
- NULL,
_gtk_css_text_decoration_style_value_new (GTK_CSS_TEXT_DECORATION_STYLE_SOLID));
gtk_css_style_property_register ("text-shadow",
GTK_CSS_AFFECTS_TEXT | GTK_CSS_AFFECTS_CLIP,
shadow_value_parse,
NULL,
- NULL,
_gtk_css_shadows_value_new_none ());
gtk_css_style_property_register ("box-shadow",
GTK_CSS_AFFECTS_BACKGROUND | GTK_CSS_AFFECTS_CLIP,
box_shadow_value_parse,
NULL,
- NULL,
_gtk_css_shadows_value_new_none ());
gtk_css_style_property_register ("margin-top",
GTK_CSS_AFFECTS_SIZE,
parse_margin,
query_length_as_int,
- assign_length_from_int,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("margin-left",
GTK_CSS_PROPERTY_MARGIN_LEFT,
GTK_CSS_AFFECTS_SIZE,
parse_margin,
query_length_as_int,
- assign_length_from_int,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("margin-bottom",
GTK_CSS_PROPERTY_MARGIN_BOTTOM,
GTK_CSS_AFFECTS_SIZE,
parse_margin,
query_length_as_int,
- assign_length_from_int,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("margin-right",
GTK_CSS_PROPERTY_MARGIN_RIGHT,
GTK_CSS_AFFECTS_SIZE,
parse_margin,
query_length_as_int,
- assign_length_from_int,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("padding-top",
GTK_CSS_PROPERTY_PADDING_TOP,
GTK_CSS_AFFECTS_SIZE,
parse_padding,
query_length_as_int,
- assign_length_from_int,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("padding-left",
GTK_CSS_PROPERTY_PADDING_LEFT,
GTK_CSS_AFFECTS_SIZE,
parse_padding,
query_length_as_int,
- assign_length_from_int,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("padding-bottom",
GTK_CSS_PROPERTY_PADDING_BOTTOM,
GTK_CSS_AFFECTS_SIZE,
parse_padding,
query_length_as_int,
- assign_length_from_int,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("padding-right",
GTK_CSS_PROPERTY_PADDING_RIGHT,
GTK_CSS_AFFECTS_SIZE,
parse_padding,
query_length_as_int,
- assign_length_from_int,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
/* IMPORTANT: the border-width properties must come after border-style properties,
* they depend on them for their value computation.
GTK_CSS_AFFECTS_BORDER,
parse_border_style,
query_border_style,
- assign_border_style,
_gtk_css_border_style_value_new (GTK_BORDER_STYLE_NONE));
gtk_css_style_property_register ("border-top-width",
GTK_CSS_PROPERTY_BORDER_TOP_WIDTH,
GTK_CSS_AFFECTS_BORDER | GTK_CSS_AFFECTS_SIZE,
parse_border_width,
query_length_as_int,
- assign_length_from_int,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("border-left-style",
GTK_CSS_PROPERTY_BORDER_LEFT_STYLE,
GTK_CSS_AFFECTS_BORDER,
parse_border_style,
query_border_style,
- assign_border_style,
_gtk_css_border_style_value_new (GTK_BORDER_STYLE_NONE));
gtk_css_style_property_register ("border-left-width",
GTK_CSS_PROPERTY_BORDER_LEFT_WIDTH,
GTK_CSS_AFFECTS_BORDER | GTK_CSS_AFFECTS_SIZE,
parse_border_width,
query_length_as_int,
- assign_length_from_int,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("border-bottom-style",
GTK_CSS_PROPERTY_BORDER_BOTTOM_STYLE,
GTK_CSS_AFFECTS_BORDER,
parse_border_style,
query_border_style,
- assign_border_style,
_gtk_css_border_style_value_new (GTK_BORDER_STYLE_NONE));
gtk_css_style_property_register ("border-bottom-width",
GTK_CSS_PROPERTY_BORDER_BOTTOM_WIDTH,
GTK_CSS_AFFECTS_BORDER | GTK_CSS_AFFECTS_SIZE,
parse_border_width,
query_length_as_int,
- assign_length_from_int,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("border-right-style",
GTK_CSS_PROPERTY_BORDER_RIGHT_STYLE,
GTK_CSS_AFFECTS_BORDER,
parse_border_style,
query_border_style,
- assign_border_style,
_gtk_css_border_style_value_new (GTK_BORDER_STYLE_NONE));
gtk_css_style_property_register ("border-right-width",
GTK_CSS_PROPERTY_BORDER_RIGHT_WIDTH,
GTK_CSS_AFFECTS_BORDER | GTK_CSS_AFFECTS_SIZE,
parse_border_width,
query_length_as_int,
- assign_length_from_int,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("border-top-left-radius",
GTK_CSS_AFFECTS_BACKGROUND | GTK_CSS_AFFECTS_BORDER,
border_corner_radius_value_parse,
NULL,
- NULL,
_gtk_css_corner_value_new (_gtk_css_number_value_new (0, GTK_CSS_PX),
_gtk_css_number_value_new (0, GTK_CSS_PX)));
gtk_css_style_property_register ("border-top-right-radius",
GTK_CSS_AFFECTS_BACKGROUND | GTK_CSS_AFFECTS_BORDER,
border_corner_radius_value_parse,
NULL,
- NULL,
_gtk_css_corner_value_new (_gtk_css_number_value_new (0, GTK_CSS_PX),
_gtk_css_number_value_new (0, GTK_CSS_PX)));
gtk_css_style_property_register ("border-bottom-right-radius",
GTK_CSS_AFFECTS_BACKGROUND | GTK_CSS_AFFECTS_BORDER,
border_corner_radius_value_parse,
NULL,
- NULL,
_gtk_css_corner_value_new (_gtk_css_number_value_new (0, GTK_CSS_PX),
_gtk_css_number_value_new (0, GTK_CSS_PX)));
gtk_css_style_property_register ("border-bottom-left-radius",
GTK_CSS_AFFECTS_BACKGROUND | GTK_CSS_AFFECTS_BORDER,
border_corner_radius_value_parse,
NULL,
- NULL,
_gtk_css_corner_value_new (_gtk_css_number_value_new (0, GTK_CSS_PX),
_gtk_css_number_value_new (0, GTK_CSS_PX)));
GTK_CSS_AFFECTS_OUTLINE | GTK_CSS_AFFECTS_CLIP,
parse_border_style,
query_border_style,
- assign_border_style,
_gtk_css_border_style_value_new (GTK_BORDER_STYLE_NONE));
gtk_css_style_property_register ("outline-width",
GTK_CSS_PROPERTY_OUTLINE_WIDTH,
GTK_CSS_AFFECTS_OUTLINE | GTK_CSS_AFFECTS_CLIP,
parse_border_width,
query_length_as_int,
- assign_length_from_int,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("outline-offset",
GTK_CSS_PROPERTY_OUTLINE_OFFSET,
GTK_CSS_AFFECTS_OUTLINE | GTK_CSS_AFFECTS_CLIP,
outline_parse,
query_length_as_int,
- assign_length_from_int,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("-gtk-outline-top-left-radius",
GTK_CSS_AFFECTS_OUTLINE,
border_corner_radius_value_parse,
NULL,
- NULL,
_gtk_css_corner_value_new (_gtk_css_number_value_new (0, GTK_CSS_PX),
_gtk_css_number_value_new (0, GTK_CSS_PX)));
_gtk_style_property_add_alias ("-gtk-outline-top-left-radius", "outline-top-left-radius");
GTK_CSS_AFFECTS_OUTLINE,
border_corner_radius_value_parse,
NULL,
- NULL,
_gtk_css_corner_value_new (_gtk_css_number_value_new (0, GTK_CSS_PX),
_gtk_css_number_value_new (0, GTK_CSS_PX)));
_gtk_style_property_add_alias ("-gtk-outline-top-right-radius", "outline-top-right-radius");
GTK_CSS_AFFECTS_OUTLINE,
border_corner_radius_value_parse,
NULL,
- NULL,
_gtk_css_corner_value_new (_gtk_css_number_value_new (0, GTK_CSS_PX),
_gtk_css_number_value_new (0, GTK_CSS_PX)));
_gtk_style_property_add_alias ("-gtk-outline-bottom-right-radius", "outline-bottom-right-radius");
GTK_CSS_AFFECTS_OUTLINE,
border_corner_radius_value_parse,
NULL,
- NULL,
_gtk_css_corner_value_new (_gtk_css_number_value_new (0, GTK_CSS_PX),
_gtk_css_number_value_new (0, GTK_CSS_PX)));
_gtk_style_property_add_alias ("-gtk-outline-bottom-left-radius", "outline-bottom-left-radius");
GTK_CSS_AFFECTS_BACKGROUND,
parse_css_area,
NULL,
- NULL,
_gtk_css_array_value_new (_gtk_css_area_value_new (GTK_CSS_AREA_BORDER_BOX)));
gtk_css_style_property_register ("background-origin",
GTK_CSS_PROPERTY_BACKGROUND_ORIGIN,
GTK_CSS_AFFECTS_BACKGROUND,
parse_css_area,
NULL,
- NULL,
_gtk_css_array_value_new (_gtk_css_area_value_new (GTK_CSS_AREA_PADDING_BOX)));
gtk_css_style_property_register ("background-size",
GTK_CSS_PROPERTY_BACKGROUND_SIZE,
GTK_CSS_AFFECTS_BACKGROUND,
background_size_parse,
NULL,
- NULL,
_gtk_css_array_value_new (_gtk_css_bg_size_value_new (NULL, NULL)));
gtk_css_style_property_register ("background-position",
GTK_CSS_PROPERTY_BACKGROUND_POSITION,
GTK_CSS_AFFECTS_BACKGROUND,
background_position_parse,
NULL,
- NULL,
_gtk_css_array_value_new (_gtk_css_position_value_new (_gtk_css_number_value_new (0, GTK_CSS_PERCENT),
_gtk_css_number_value_new (0, GTK_CSS_PERCENT))));
GTK_CSS_AFFECTS_BORDER,
color_parse,
color_query,
- color_assign,
_gtk_css_color_value_new_current_color ());
gtk_css_style_property_register ("border-right-color",
GTK_CSS_PROPERTY_BORDER_RIGHT_COLOR,
GTK_CSS_AFFECTS_BORDER,
color_parse,
color_query,
- color_assign,
_gtk_css_color_value_new_current_color ());
gtk_css_style_property_register ("border-bottom-color",
GTK_CSS_PROPERTY_BORDER_BOTTOM_COLOR,
GTK_CSS_AFFECTS_BORDER,
color_parse,
color_query,
- color_assign,
_gtk_css_color_value_new_current_color ());
gtk_css_style_property_register ("border-left-color",
GTK_CSS_PROPERTY_BORDER_LEFT_COLOR,
GTK_CSS_AFFECTS_BORDER,
color_parse,
color_query,
- color_assign,
_gtk_css_color_value_new_current_color ());
gtk_css_style_property_register ("outline-color",
GTK_CSS_PROPERTY_OUTLINE_COLOR,
GTK_CSS_AFFECTS_OUTLINE,
color_parse,
color_query,
- color_assign,
_gtk_css_color_value_new_current_color ());
gtk_css_style_property_register ("background-repeat",
GTK_CSS_AFFECTS_BACKGROUND,
background_repeat_value_parse,
NULL,
- NULL,
_gtk_css_array_value_new (_gtk_css_background_repeat_value_new (GTK_CSS_REPEAT_STYLE_REPEAT,
GTK_CSS_REPEAT_STYLE_REPEAT)));
gtk_css_style_property_register ("background-image",
GTK_CSS_AFFECTS_BACKGROUND,
background_image_value_parse,
background_image_value_query,
- background_image_value_assign,
_gtk_css_array_value_new (_gtk_css_image_value_new (NULL)));
gtk_css_style_property_register ("background-blend-mode",
GTK_CSS_AFFECTS_BACKGROUND,
blend_mode_value_parse,
NULL,
- NULL,
_gtk_css_array_value_new (_gtk_css_blend_mode_value_new (GTK_CSS_BLEND_MODE_NORMAL)));
gtk_css_style_property_register ("border-image-source",
GTK_CSS_AFFECTS_BORDER,
css_image_value_parse,
css_image_value_query,
- css_image_value_assign,
_gtk_css_image_value_new (NULL));
gtk_css_style_property_register ("border-image-repeat",
GTK_CSS_PROPERTY_BORDER_IMAGE_REPEAT,
GTK_CSS_AFFECTS_BORDER,
border_image_repeat_parse,
NULL,
- NULL,
_gtk_css_border_repeat_value_new (GTK_CSS_REPEAT_STYLE_STRETCH,
GTK_CSS_REPEAT_STYLE_STRETCH));
GTK_CSS_AFFECTS_BORDER,
border_image_slice_parse,
query_border,
- assign_border,
_gtk_css_border_value_new (_gtk_css_number_value_new (100, GTK_CSS_PERCENT),
_gtk_css_number_value_new (100, GTK_CSS_PERCENT),
_gtk_css_number_value_new (100, GTK_CSS_PERCENT),
GTK_CSS_AFFECTS_BORDER,
border_image_width_parse,
query_border,
- assign_border,
_gtk_css_border_value_new (_gtk_css_number_value_new (1, GTK_CSS_NUMBER),
_gtk_css_number_value_new (1, GTK_CSS_NUMBER),
_gtk_css_number_value_new (1, GTK_CSS_NUMBER),
GTK_CSS_AFFECTS_ICON | GTK_CSS_AFFECTS_SYMBOLIC_ICON,
css_image_value_parse_with_builtin,
NULL,
- NULL,
_gtk_css_image_value_new (gtk_css_image_builtin_new ()));
gtk_css_style_property_register ("-gtk-icon-shadow",
GTK_CSS_PROPERTY_ICON_SHADOW,
GTK_CSS_AFFECTS_ICON | GTK_CSS_AFFECTS_SYMBOLIC_ICON | GTK_CSS_AFFECTS_CLIP,
shadow_value_parse,
NULL,
- NULL,
_gtk_css_shadows_value_new_none ());
_gtk_style_property_add_alias ("-gtk-icon-shadow", "icon-shadow");
gtk_css_style_property_register ("-gtk-icon-style",
GTK_CSS_AFFECTS_ICON | GTK_CSS_AFFECTS_SYMBOLIC_ICON,
icon_style_parse,
NULL,
- NULL,
_gtk_css_icon_style_value_new (GTK_CSS_ICON_STYLE_REQUESTED));
gtk_css_style_property_register ("-gtk-icon-transform",
GTK_CSS_PROPERTY_ICON_TRANSFORM,
GTK_CSS_AFFECTS_ICON | GTK_CSS_AFFECTS_SYMBOLIC_ICON | GTK_CSS_AFFECTS_CLIP,
transform_value_parse,
NULL,
- NULL,
_gtk_css_transform_value_new_none ());
gtk_css_style_property_register ("min-width",
GTK_CSS_AFFECTS_SIZE,
minmax_parse,
query_length_as_int,
- NULL,
_gtk_css_number_value_new (0, GTK_CSS_PX));
gtk_css_style_property_register ("min-height",
GTK_CSS_PROPERTY_MIN_HEIGHT,
GTK_CSS_AFFECTS_SIZE,
minmax_parse,
query_length_as_int,
- NULL,
_gtk_css_number_value_new (0, GTK_CSS_PX));
gtk_css_style_property_register ("transition-property",
0,
transition_property_parse,
NULL,
- NULL,
_gtk_css_array_value_new (_gtk_css_ident_value_new ("all")));
gtk_css_style_property_register ("transition-duration",
GTK_CSS_PROPERTY_TRANSITION_DURATION,
0,
transition_time_parse,
NULL,
- NULL,
_gtk_css_array_value_new (_gtk_css_number_value_new (0, GTK_CSS_S)));
gtk_css_style_property_register ("transition-timing-function",
GTK_CSS_PROPERTY_TRANSITION_TIMING_FUNCTION,
0,
transition_timing_function_parse,
NULL,
- NULL,
_gtk_css_array_value_new (
_gtk_css_ease_value_new_cubic_bezier (0.25, 0.1, 0.25, 1.0)));
gtk_css_style_property_register ("transition-delay",
0,
transition_time_parse,
NULL,
- NULL,
_gtk_css_array_value_new (_gtk_css_number_value_new (0, GTK_CSS_S)));
gtk_css_style_property_register ("animation-name",
0,
transition_property_parse,
NULL,
- NULL,
_gtk_css_array_value_new (_gtk_css_ident_value_new ("none")));
gtk_css_style_property_register ("animation-duration",
GTK_CSS_PROPERTY_ANIMATION_DURATION,
0,
transition_time_parse,
NULL,
- NULL,
_gtk_css_array_value_new (_gtk_css_number_value_new (0, GTK_CSS_S)));
gtk_css_style_property_register ("animation-timing-function",
GTK_CSS_PROPERTY_ANIMATION_TIMING_FUNCTION,
0,
transition_timing_function_parse,
NULL,
- NULL,
_gtk_css_array_value_new (
_gtk_css_ease_value_new_cubic_bezier (0.25, 0.1, 0.25, 1.0)));
gtk_css_style_property_register ("animation-iteration-count",
0,
iteration_count_parse,
NULL,
- NULL,
_gtk_css_array_value_new (_gtk_css_number_value_new (1, GTK_CSS_NUMBER)));
gtk_css_style_property_register ("animation-direction",
GTK_CSS_PROPERTY_ANIMATION_DIRECTION,
0,
parse_css_direction,
NULL,
- NULL,
_gtk_css_array_value_new (_gtk_css_direction_value_new (GTK_CSS_DIRECTION_NORMAL)));
gtk_css_style_property_register ("animation-play-state",
GTK_CSS_PROPERTY_ANIMATION_PLAY_STATE,
0,
parse_css_play_state,
NULL,
- NULL,
_gtk_css_array_value_new (_gtk_css_play_state_value_new (GTK_CSS_PLAY_STATE_RUNNING)));
gtk_css_style_property_register ("animation-delay",
GTK_CSS_PROPERTY_ANIMATION_DELAY,
0,
transition_time_parse,
NULL,
- NULL,
_gtk_css_array_value_new (_gtk_css_number_value_new (0, GTK_CSS_S)));
gtk_css_style_property_register ("animation-fill-mode",
GTK_CSS_PROPERTY_ANIMATION_FILL_MODE,
0,
parse_css_fill_mode,
NULL,
- NULL,
_gtk_css_array_value_new (_gtk_css_fill_mode_value_new (GTK_CSS_FILL_NONE)));
gtk_css_style_property_register ("opacity",
0,
opacity_parse,
opacity_query,
- NULL,
_gtk_css_number_value_new (1, GTK_CSS_NUMBER));
gtk_css_style_property_register ("-gtk-icon-effect",
GTK_CSS_PROPERTY_ICON_EFFECT,
GTK_CSS_AFFECTS_ICON,
image_effect_parse,
NULL,
- NULL,
_gtk_css_icon_effect_value_new (GTK_CSS_ICON_EFFECT_NONE));
_gtk_style_property_add_alias ("-gtk-icon-effect", "-gtk-image-effect");
0,
bindings_value_parse,
bindings_value_query,
- bindings_value_assign,
_gtk_css_array_value_new (_gtk_css_string_value_new (NULL)));
_gtk_style_property_add_alias ("-gtk-key-bindings", "gtk-key-bindings");
GTK_CSS_AFFECTS_TEXT,
color_parse,
color_query,
- color_assign,
_gtk_css_color_value_new_current_color ());
gtk_css_style_property_register ("-gtk-secondary-caret-color",
GTK_CSS_PROPERTY_SECONDARY_CARET_COLOR,
GTK_CSS_AFFECTS_TEXT,
color_parse,
color_query,
- color_assign,
_gtk_css_color_value_new_current_color ());
}